From c759fee45bf44f2947a3480d54c03ff7e028c39e Mon Sep 17 00:00:00 2001 From: Jan Beulich Date: Fri, 30 Nov 2012 11:42:55 +0100 Subject: [PATCH] AMD IOMMU: add locking missing from c/s 26198:ba90ecb0231f An oversight of mine; I'm sorry. Signed-off-by: Jan Beulich Acked-by: Ian Campbell --- xen/drivers/passthrough/amd/iommu_init.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/xen/drivers/passthrough/amd/iommu_init.c b/xen/drivers/passthrough/amd/iommu_init.c index 82ce9679a7..1cbdda344a 100644 --- a/xen/drivers/passthrough/amd/iommu_init.c +++ b/xen/drivers/passthrough/amd/iommu_init.c @@ -795,6 +795,7 @@ static bool_t __init set_iommu_interrupt_handler(struct amd_iommu *iommu) static void enable_iommu(struct amd_iommu *iommu) { unsigned long flags; + struct irq_desc *desc; spin_lock_irqsave(&iommu->lock, flags); @@ -812,7 +813,11 @@ static void enable_iommu(struct amd_iommu *iommu) if ( iommu_has_feature(iommu, IOMMU_EXT_FEATURE_PPRSUP_SHIFT) ) register_iommu_ppr_log_in_mmio_space(iommu); - set_msi_affinity(irq_to_desc(iommu->msi.irq), &cpu_online_map); + desc = irq_to_desc(iommu->msi.irq); + spin_lock(&desc->lock); + set_msi_affinity(desc, &cpu_online_map); + spin_unlock(&desc->lock); + amd_iommu_msi_enable(iommu, IOMMU_CONTROL_ENABLED); set_iommu_ht_flags(iommu); -- 2.30.2